package response

import (
	"longmen/server/internal/services/nami/services/esport/lol"
	"longmen/server/pkg/db/mysql/models/models_esports"
)

type (
	TournamentApiResponse struct {
		Code  int `json:"code"`
		Query struct {
			Limit int    `json:"limit"`
			Type  string `json:"type"`
			Total int    `json:"total"`
			ID    int    `json:"id"`
			MinID int    `json:"min_id"`
			MaxID int    `json:"max_id"`
		} `json:"query"`
		Results []Tournament `json:"results"`
	}

	Tournament struct {
		ID         int                        `json:"id"`           // 赛事id
		NameEn     string                     `json:"name_en"`      // 英文名称
		NameZh     string                     `json:"name_zh"`      // 中文名称
		AbbrEn     string                     `json:"abbr_en"`      // 英文名称
		AbbrZh     string                     `json:"abbr_zh"`      // 中文简称
		StatusID   models_esports.LOLStatusID `json:"status_id"`    // 状态，详见状态码->比赛状态
		Logo       string                     `json:"logo"`         // 赛事logo
		Cover      string                     `json:"cover"`        // 封面
		StartTime  int                        `json:"start_time"`   // 开始时间
		EndTime    int                        `json:"end_time"`     // 结束时间
		CityName   string                     `json:"city_name"`    // 举办地 中文名称
		CityNameEn string                     `json:"city_name_en"` // 举办地 英文名称
		Type       int                        `json:"type"`         // 赛事类型，1.全球性、2.五大联赛、3.地区联赛、4.其他赛事、0.未知
		PricePool  string                     `json:"price_pool"`   // 奖金池
		UpdatedAt  int                        `json:"updated_at"`   // 更新时间
	}
)

func (t Tournament) Get() models_esports.LolTournament {
	return models_esports.LolTournament{
		ID:         t.ID,
		NameEn:     t.NameEn,
		NameZh:     t.NameZh,
		AbbrEn:     t.AbbrEn,
		AbbrZh:     t.AbbrZh,
		StatusID:   t.StatusID,
		Logo:       t.Logo,
		Cover:      t.Cover,
		StartTime:  t.StartTime,
		EndTime:    t.EndTime,
		CityName:   t.CityName,
		CityNameEn: t.CityNameEn,
		Type:       t.Type,
		PricePool:  t.PricePool,
		UpdatedAt:  t.UpdatedAt,
	}
}

func (t TournamentApiResponse) Interfaces() []lol.InsertTournamentInterface {
	records := make([]lol.InsertTournamentInterface, 0)
	for _, result := range t.Results {
		records = append(records, result)
	}
	return records
}
